# Author:liuqt
# week 07

# 1.
# vowels = ['a','e','i','o','u']  # 将用五个元音字母给名为 vowels 的列表赋值
# word = "Milliways"  # 定义 word 这个变量
# for letter in word:  # 将 letter 放入 word 中循环，并取 word 中的各个字母
#     if letter in vowels:  # 如果 letter 在 word 中取到的各个字母 在 vowels
#         print(letter) # 则打印 letter
# print()


# 2.
# vowels = ['a','e','i','o','u']
# word  = "Milliways"
# found = []   # 建立一个名为 found 的空列表
# len(found)  # 利用 Len 确认 found 中没有元素的存在
# for letter in word:  # 将 letter 放入 word 中循环，并且取 word 的各个字母
#     if letter in vowels:  # 如果 letter 在 word 中取到的各个字母在 vowels 中
#         if letter not in found:  # 在上面的前提下，如果 letter 在 vowels 中取到的字母 不在  found 列表中
#             found.append(letter)  # 则 在 found 列表中增加 letter 取到的字母
# for vowel in found: # 将 vowel 放入 found 中循环，并取 found 的各个字母
#     print(vowel) # 通过以下的测试得知，为什么此处 print 出来的是 ia 而不是 iia

# TEST！！！
# 通过以下测试得知，当列表中出现了重复的元素，使用 append 来拓展列表 此时的列表只会列出找到的每一个字母的 唯一 字母
# print()
# test = []
# i = ['a','e','e','i']
# e = "applee"
# for a in e:
#     if a in i : # 这时候 print 出来的是 aee
#         if a not in test: # 这时候 print 出来的是 aee
#             test.append(a) # 这时候 print 出来的是 ae
# print(test)

# 3.
# print()  # 空行
# vowels = ['a','e','i','o','u']
# word = input ("Provide a word to search for vowels: ") # 使用 input 函数 使这行代码更加的通用以及具有交互性
# found = []
# for letter in word:
#     if letter in vowels:
#         if letter not in found:
#             found.append(letter)
# for vowel in found :
#     print(vowel)


# 4.
# phrase = "Don't panic!"  # 给名为 phrase 的变量赋值
# plist = list(phrase)  # 将 phrase 变成一个 名为 plist 的列表
# print(phrase)
# print(plist)
#
# for i in range(4):  #循环四次
#     plist.pop( )  # 连续删除了四次 plist 的末位值  此时的 plist=['D','o','n',"'",'t','','p','a' ]
# plist.pop(0)  # pop 删除 pop() 删除末位 此时的 plist=['o','n',"'",'t','','p','a']
# plist.remove("'")  # remove 删除 一般删除同个值中，第一个出现的值 和 pop的区别 pop()可以不填内容 但是 remove() 里面要填值
#                    # 此时的 plist =['o','n','t','','p','a']
# plist.extend([plist.pop(),plist.pop()])
#             # extend() 扩展列表
#             # 在上述代码的操作中，遵循了数学的计算原则： 1. 从左往右算  2.先算小括号 在算大括号
#             # 由 print(plist.pop(),plist.pop())可知
#             # 第一个 plist.pop() 的值是 "a"
#             # 第二个 plist.pop() 的值是 "p"
#             # 整个运算顺序是 1.删除 plist 的末位， 即 plist = ['o','n','t','','p']
#             #             2.再次删除 plist 的 末位，即 plist = ['o','n','t','',]
#             #              （此时的这个 plist 就是最外面的 plist.extend 的 plist）
#             #             3.plist = ['o','n','t','',] + ['a'] + ['p'] ==> plist = ['o','n','t','','a','p']
# plist.insert(2,plist.pop(3))
#             # 1. 删除 plist 中索引的第三个元素
#             # 2. 插入元素，在 plist 中 索引第二个位置 插入 plist.pop(3) 这个值 即 plist.pop(3) = ['']
#             # 此时的 plist= ['o','n','','t','a','p']
# new_phrase = ''.join(plist)
#            # https://www.runoob.com/python3/python3-string-join.html 【关于 join.() 的用法】
#            # 【Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。】
# print(plist)
# print(new_phrase)

# 5.
# phrase = "Don't panic!"
# plist = list(phrase)
# print(phrase)
# print(plist)
#
# new_phrase = ''.join(plist[1:3])  # 将 plist 列表中的 索引值为 1 和 2 的值以指定的字符连接，生成一个新的字符串。
#                                   # !!! ps: 列表切片 采用的是 左闭右开区间！！！
#                                   # 此时的 new_phrse = “on”
# new_phrase = new_phrase + ''.join([plist[5],plist[4],plist[7],plist[6]])
#             #  'on'     +             [' ']     ['t']    ['a']     ['p']
#             # new_phrase = "on tap"
# print(plist)
# print(new_phrase)

# 6.
# paranoid_android = "Marvin"
# letters = list(paranoid_android)
# for char in letters:  # 取 letter 列表中各个对象，每次将一个字符赋给另一个名为 char 的变量
#     print('\t',char)  # https://blog.csdn.net/fengzhimohan/article/details/105491857、
#                       #【关于 \t 制表符的说明及用法】  \t 就相当于一个 tab 键

# 7.
paranoid_android = "Marvin,the Paranoid Android"
letters = list(paranoid_android)
print(letters)
# ['M', 'a', 'r', 'v', 'i', 'n', ',', 't', 'h', 'e', ' ', 'P', 'a', 'r', 'a', 'n', 'o', 'i', 'd', ' ', 'A', 'n', 'd', 'r', 'o', 'i', 'd']
#   0    1    2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26
# -27  -26  -25  -24  -23  -22  -21  -20  -19  -18  -17  -16  -15  -14  -13  -12  -11   -10   -9   -8   -7   -6   -5   -4   -3   -2   -1
print()  # 在python中 可以利用 python() 实现空一行的效果 【为了美观】
for char in letters[:6]:  # for 循环的范围 是从 letters 列表索引值为 0~5 的值里面循环 即左闭右开！
    print('\t',char)
print()
for char in letters[-7:]:  # for 循环的范围 是从 letters 列表索引值为 -7~-1 的值里面循环
    print('\t'*2,char)     # ‘\t’*2 ==> 按了 tab 键两次
print()
for char in letters[11:20]:  # for 循环的范围 是从 letters 列表索引值为 11~19 的值里面循环
    print('\t'*3,char)       # ‘\t’*3 ==> 按了 tab 键三次